package com.penghaisoft.microwms.product.web.controller.intowarehouse;

import com.penghaisoft.microwms.common.Constant;
import com.penghaisoft.microwms.common.controller.BaseController;
import com.penghaisoft.microwms.common.data.model.ProBarcode;
import com.penghaisoft.microwms.common.dto.Resp;
import com.penghaisoft.microwms.common.dto.TransResult;
import com.penghaisoft.microwms.common.page.Pager;
import com.penghaisoft.microwms.product.service.IProBarcodeService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import static com.penghaisoft.microwms.common.Constant.PRODUCTNAME;

@RestController
@RequestMapping(value = "/probarcode")
@Slf4j
public class ProBarcodeController extends BaseController {
	
		@Autowired
		private IProBarcodeService proBarcodeService;

	  /**
	   * 新增记录
	   * @param proBarcode
	   * @return
	   */
		@PostMapping("c")
		public TransResult create(ProBarcode proBarcode) {
			proBarcode.preInsert();
			Resp resp =  proBarcodeService.create(proBarcode);
			return fromResp(resp);
		}

	  /**
	   * 删除记录（逻辑删除active_flag=0)
	   * @param proBarcode
	   * @return
	   */
		@PostMapping("d")
		public TransResult delete(ProBarcode proBarcode) {
			proBarcode.preUpdate();
			Resp resp =  proBarcodeService.delete(proBarcode);
			return fromResp(resp);
		}

	  /**
	   * 查询列表
	   * @param
	   * @return
	   */
		@PostMapping("list")
		public TransResult list(@RequestParam(name = "page", defaultValue = "1") int page,
                            @RequestParam(name = "rows", defaultValue = "10") int rows,ProBarcode proBarcode) {
			Pager<ProBarcode> result = proBarcodeService.findListByCondition(page,rows,proBarcode);
			return success(result);
		}

	  /**
	   * 查询单条
	   * @param id
	   * @return
	   */
		@GetMapping("r/{id}")
		public TransResult queryById(@PathVariable String id) {
			ProBarcode  proBarcode = proBarcodeService.findById(id);
			return success(proBarcode);
		}

	  /**
	   * 修改记录
	   * @param proBarcode
	   * @return
	   */
		@PostMapping("u")
		public TransResult update(ProBarcode proBarcode) {
			TransResult result = new TransResult();
			if("1".equals(proBarcode.getUserDefined1())){
				result.setCode(Constant.FAIL);
				result.setMsg("该条码已入库，不可修改");
				return result;
//				return fail("");
			}
			proBarcode.preUpdate();
			proBarcode.setLastModifiedBy(getLoginName());
			proBarcode.setStatus("0");
			Resp resp =  proBarcodeService.update(proBarcode);
	    	return fromResp(resp);
		}

	/**
	 * 条码打印(根据单号进行打印)
	 * @param proBarcode
	 * @author songyan
	 * @date 2020年5月18日 下午15:12:49
	 */
	@GetMapping("getPtintInfo")
	public TransResult printOutList(ProBarcode proBarcode) {
//		String factoryCode=getCurrentFactoryCode();
		//查询待打印数据列表
		List<ProBarcode> result = proBarcodeService.queryPrintListTM(proBarcode);

		return success(result);

	}

	/**
	 * 批量条码打印（选中一条或多条数据）
	 * @param proBarcode
	 * @author songyan
	 * @date 2020年5月18日 下午15:12:49
	 */
	@GetMapping("printListSn")
	public TransResult printOutListbm(ProBarcode proBarcode) {
		TransResult result = new TransResult();
		result.setCode(Constant.SUCCESS);

		//所选中条码的集合
		String code=proBarcode.getBarcode();

		if(code == null || "".equals(code)){
			result.setCode(Constant.FAIL);
			result.setMsg("查询信息不能为空!");
			return result;
		}

		String[] rid=code.split("-");
		List<ProBarcode> dataList=new ArrayList<ProBarcode>();

		if(rid == null || rid.length == 0){
			result.setCode(Constant.FAIL);
			result.setMsg("解析数据异常!");
			return result;
		}

		for(String barcode : rid){
			ProBarcode  detail=new ProBarcode();
			detail.setBarcode(barcode);
			//0--未入库 1--已入库
			detail.setUserDefined1("1");
			dataList.add(detail);
		}

		//查询待打印数据列表
		List<ProBarcode> codeList = proBarcodeService.queryPrintListSn(dataList);
//		result.setList(codeList);
//		if(codeList != null && codeList.size()>0){
//			for(ProBarcode tmp : codeList){
//				if(PRODUCTNAME.equals(tmp.getProductName())){
//					tmp.setProductName(PRODUCTNAME+"-C级");
//				}
//			}
//		}
		result.setData(codeList);
		return result;

	}


}
